package org.jeecg.modules.yinsheng.command.protocolpay;

import java.io.Serializable;
import java.math.BigDecimal;

import org.jeecg.modules.yinsheng.annotation.Length;
import org.jeecg.modules.yinsheng.annotation.NotBlank;

/**
 * @ClassName SignProtocolReqCommand
 * @Description 协议签约
 * @Author linxl
 * @Date 2021/6/7 13:55
 * @Version 1.0
 */

public class SignProtocolReqCommand implements Serializable {
	private static final long serialVersionUID = 8012616592270190190L;
	// 商户订单号
	@NotBlank(message = "商户订单号不能为空")
	@Length(max = 32, message = "商户订单号最大长度不能超过32个字符")
	private String merchantOrderNo;

	// 支付作用范围，不填默认01
	@NotBlank(message = "支付作用范围不能为空")
	private String paymentScope;

	// 交易金额（单位：元）
	private BigDecimal amount;

	@NotBlank(message = "收款方商户号不能为空")
	@Length(max = 20, message = "收款方商户号最大长度不能超过20个字符")
	private String merchantNo;

	// 唯一客户标识，商户旗下客户号(必填)
	@NotBlank(message = "唯一客户标识不能为空")
	private String userId;

	// 付款银行绑定手机号(必填)
	@NotBlank(message = "付款银行绑定手机号不能为空")
	@Length(max = 11, min = 11, message = "手机号码格式不正确")
	private String payerPhone;

	// 付款方银行账号(必填)
	@NotBlank(message = "付款方银行账号不能为空")
	private String payerBankAccountNo;

	// 付款方银行户名(必填)
	@NotBlank(message = "付款方银行户名不能为空")
	private String payerBankAccountName;

	// 付款方证件类型（暂只支持身份证类型：00）(必填)
	@NotBlank(message = "付款方证件类型不能为空")
	private String payerCredentialType;

	// 付款方证件号码(必填)
	@NotBlank(message = "付款方证件号码不能为空")
	private String payerCredentialNo;

	// CVV码（贷记卡必填）
	private String cvv;

	// 贷记卡必填，有效结束日期
	private String cardExprDt;

	// 手机串号
	private String mobileIMEI;

	public String getPaymentScope() {
		return paymentScope;
	}

	public SignProtocolReqCommand setPaymentScope(String paymentScope) {
		this.paymentScope = paymentScope;
		return this;
	}

	public String getMerchantNo() {
		return merchantNo;
	}

	public SignProtocolReqCommand setMerchantNo(String merchantNo) {
		this.merchantNo = merchantNo;
		return this;
	}

	public String getUserId() {
		return userId;
	}

	public SignProtocolReqCommand setUserId(String userId) {
		this.userId = userId;
		return this;
	}

	public String getPayerPhone() {
		return payerPhone;
	}

	public SignProtocolReqCommand setPayerPhone(String payerPhone) {
		this.payerPhone = payerPhone;
		return this;
	}

	public String getPayerBankAccountNo() {
		return payerBankAccountNo;
	}

	public SignProtocolReqCommand setPayerBankAccountNo(String payerBankAccountNo) {
		this.payerBankAccountNo = payerBankAccountNo;
		return this;
	}

	public String getPayerBankAccountName() {
		return payerBankAccountName;
	}

	public SignProtocolReqCommand setPayerBankAccountName(String payerBankAccountName) {
		this.payerBankAccountName = payerBankAccountName;
		return this;
	}

	public String getPayerCredentialType() {
		return payerCredentialType;
	}

	public SignProtocolReqCommand setPayerCredentialType(String payerCredentialType) {
		this.payerCredentialType = payerCredentialType;
		return this;
	}

	public String getPayerCredentialNo() {
		return payerCredentialNo;
	}

	public SignProtocolReqCommand setPayerCredentialNo(String payerCredentialNo) {
		this.payerCredentialNo = payerCredentialNo;
		return this;
	}

	public String getCvv() {
		return cvv;
	}

	public SignProtocolReqCommand setCvv(String cvv) {
		this.cvv = cvv;
		return this;
	}

	public String getMobileIMEI() {
		return mobileIMEI;
	}

	public SignProtocolReqCommand setMobileIMEI(String mobileIMEI) {
		this.mobileIMEI = mobileIMEI;
		return this;
	}

	public String getMerchantOrderNo() {
		return merchantOrderNo;
	}

	public SignProtocolReqCommand setMerchantOrderNo(String merchantOrderNo) {
		this.merchantOrderNo = merchantOrderNo;
		return this;
	}

	public BigDecimal getAmount() {
		return amount;
	}

	public SignProtocolReqCommand setAmount(BigDecimal amount) {
		this.amount = amount;
		return this;
	}

	public String getCardExprDt() {
		return cardExprDt;
	}

	public SignProtocolReqCommand setCardExprDt(String cardExprDt) {
		this.cardExprDt = cardExprDt;
		return this;
	}

}
